package com.tulingxueyuan.mall.modules.pms.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tulingxueyuan.mall.modules.pms.model.PmsProductCategory;
import com.tulingxueyuan.mall.modules.pms.mapper.PmsProductCategoryMapper;
import com.tulingxueyuan.mall.dto.PmsProductCategoryJiDto;
import com.tulingxueyuan.mall.modules.pms.service.PmsProductCategoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 产品分类 服务实现类
 * </p>
 *
 * @author SiXiaoLong
 * @since 2022-10-13
 */
@Service
public class PmsProductCategoryServiceImpl extends ServiceImpl<PmsProductCategoryMapper, PmsProductCategory> implements PmsProductCategoryService {
    @Autowired
    private PmsProductCategoryMapper pmsProductCategoryMapper;
    /**
     * 获取商品分类列表
     * @return
     */
    @Override
    public Page getList(Long parentId, Integer pageNum, Integer pageSize) {
        Page<PmsProductCategory> page = new Page<>(pageNum,pageSize);
        LambdaQueryWrapper<PmsProductCategory> lqw = new LambdaQueryWrapper<>();
        lqw.eq(PmsProductCategory::getParentId,parentId);
        lqw.orderByDesc(PmsProductCategory::getSort);
        return this.page(page,lqw);
    }
    /**
     * 商品列表的商品分类级联属性
     */
    @Override
    public List<PmsProductCategoryJiDto> getWithChildren() {
////        先查出来parentid为0的数据
//        LambdaQueryWrapper<PmsProductCategory> lqw = new LambdaQueryWrapper<>();
//        lqw.eq(PmsProductCategory::getParentId,0);
//        List<PmsProductCategory> list = this.list(lqw);
////        之后再根据id   查parentid与id相等的二级分类
//        List<PmsProductCategoryJiDto> pmsProductCategoryDtos = list.stream().map(e -> {
//            PmsProductCategoryJiDto dto = new PmsProductCategoryJiDto();
//            BeanUtils.copyProperties(e,dto);
//            LambdaQueryWrapper<PmsProductCategory> lqw2 = new LambdaQueryWrapper<>();
//            lqw2.eq(PmsProductCategory::getParentId,e.getId());
//            List<PmsProductCategory> list1 = this.list(lqw2);
//            dto.setChildren(list1);
//            return dto;
//        }).collect(Collectors.toList());
//        return pmsProductCategoryDtos;
        return pmsProductCategoryMapper.getWithChildren();
    }
}
